Self-healing software systems are designed to overcome problems occurring during testing and run time, and to improve overall system behavior. Generally, a self-healing system monitors system performance and provides a solution to a detected problem or prevents a predicted problem from occurring.
In current self-healing systems, the problems are vertically detected when certain events occur at various system layers (e.g., hardware and software). Specific events may be associated with healing agents that provide a specific solution to a predictable problem. Thus, when a certain event is detected, a corresponding healing agent is activated to address the respective problems. In summary, in the current self-healing systems, certain events are monitored and analyzed to detect and solve predictable problems in a specific manner.
Unfortunately, however, current methods for implementing self-healing software code are cumbersome, because these methods require detailed analysis of the detected events at runtime and involvement of a highly skilled staff that can understand the internal design of the software and complex programming languages or standards (e.g., Aspects™, Java Beans™, Enterprise Java Bean (EJB)™, etc.). Further, a very high level of overhead can be associated with some self-healing implementations (e.g., Aspects).
Therefore, self-healing methods and systems are needed that can overcome the aforementioned shortcomings by providing less complicated and less burdensome means to understand the nature of the detected events and the context in which the events are detected.